package com.kk.xhr.common.pojo;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 二进制枚举类
 *
 * @author luokexiong
 * @version 1.0 2021/2/13
 * @since 1.0.0
 */
@Getter
@AllArgsConstructor
public enum  BinaryEnum {
    /** false */
    FALSE((byte) 0),
    /** true */
    TRUE((byte) 1);

    private final byte value;

    /**
     * enum -> boolean
     *
     * @return boolean
     */
    public Boolean toBoolean() {
        return this == TRUE;
    }

    /**
     * byte -> enum
     *
     * @param value byte
     * @return enum
     */
    public static BinaryEnum from(byte value) {
        return (byte) 0 == value ? FALSE : TRUE;
    }

    /**
     * boolean -> enum
     *
     * @param value boolean
     * @return enum
     */
    public static BinaryEnum from(boolean value) {
        return value ? TRUE : FALSE;
    }

    /**
     * byte 取反操作
     * <p>0 -> 1</p>
     * <p>1 -> 0</p>
     *
     * @param value byte
     * @return negate byte
     */
    public static byte reverse(byte value) {
        return (byte)1 == value ? (byte)0 : (byte)1;
    }
}
